From 7c7d62510fbf46e94fcc54be152ff163a2808e87 Mon Sep 17 00:00:00 2001 From: Sebastian Keller Date: Sat, 11 Apr 2026 15:02:12 +0200 Subject: [PATCH] environment: Disconnect from transitions when stopped Transitions don't emit a 'destroy' signal which would be used by the SignalTracker to automatically clean up, leading to all transitions being leaked until session shutdown. Avoid this by manually disconnecting them when stopped. Fixes: 240aa910d ("environment: Ignore animation events after shutdown") Part-of: --- js/ui/environment.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/js/ui/environment.js b/js/ui/environment.js index 2e5baa97e..45dafa9a7 100644 --- a/js/ui/environment.js +++ b/js/ui/environment.js @@ -182,8 +182,10 @@ function _easeActor(actor, params) { } if (transition) { - transition.connectObject('stopped', (t, finished) => callback(finished), - sessionSignalHolder); + transition.connectObject('stopped', (t, finished) => { + transition.disconnectObject(sessionSignalHolder); + callback(finished); + }, sessionSignalHolder); } else { callback(true); } @@ -271,8 +273,10 @@ function _easeAnimatableProperty(animatable, propName, target, params) { prepare(); } - transition.connectObject('stopped', - (t, finished) => callback(finished), sessionSignalHolder); + transition.connectObject('stopped', (t, finished) => { + transition.disconnectObject(sessionSignalHolder); + callback(finished); + }, sessionSignalHolder); return promise; } -- 2.39.5